package com.fortune.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.fortune.common.paging.PagingData;
import com.fortune.dao.DStoreTransDao;
import com.fortune.dto.in.dStoreTrans.DStoreTransAListDto;
import com.fortune.dto.in.dStoreTrans.DStoreTransAddDetailDto;
import com.fortune.dto.in.dStoreTrans.DStoreTransAddDto;
import com.fortune.dto.in.dStoreTrans.DStoreTransEditDto;
import com.fortune.dto.in.mStoreTrans.MStoreTransAddDetailDto;
import com.fortune.entity.DUserInfo;
import com.fortune.service.DStoreTransService;
import com.fortune.util.UUIDUtil;
import com.fortune.vo.dStoreTrans.DStoreTransInfo;
import com.fortune.vo.dStoreTrans.DstoreTransDetail;
@Service
public class DStoreTransServiceImpl implements DStoreTransService {
	
	@Autowired
	private DStoreTransDao dStoreTransDao;
	@Override
	public PagingData<DStoreTransInfo> pagingData(DUserInfo dUserInfo, DStoreTransAListDto listDto) {
		List<DStoreTransInfo> list = dStoreTransDao.list(dUserInfo, listDto);
		int count = dStoreTransDao.count(dUserInfo, listDto);
		PagingData<DStoreTransInfo> pagingData = new PagingData<>(list, count);
		return pagingData;
	}
	@Override
	public DstoreTransDetail dstoreTransDetail(DUserInfo dUserInfo, String id) {
		DstoreTransDetail dstoreTransDetail = dStoreTransDao.detail(dUserInfo, id);
		return dstoreTransDetail;
	}
	@Override
	@Transactional
	public int add(DUserInfo dUserInfo, DStoreTransAddDto addDto) {
		String uuid = UUIDUtil.get32UUID();
		int add = dStoreTransDao.add(uuid, dUserInfo, addDto);
		if (add==1) {
			for (DStoreTransAddDetailDto addDetailDto : addDto.getList()) {
				String price = dStoreTransDao.price(dUserInfo, addDetailDto);
				dStoreTransDao.addDetail(uuid,price,dUserInfo, addDetailDto);
			}
			return add;
		}
		return 0;
	}
	@Override
	@Transactional
	public int edit(DUserInfo dUserInfo, DStoreTransEditDto editDto) {
		int edit =  dStoreTransDao.edit(dUserInfo, editDto);
		if (edit==1) {
			int delete = dStoreTransDao.deleteDetail(dUserInfo, editDto);
			String uuid = editDto.getId();
			for (DStoreTransAddDetailDto addDetailDto : editDto.getList()) {
				String price = dStoreTransDao.price(dUserInfo, addDetailDto);
				dStoreTransDao.addDetail(uuid,price,dUserInfo, addDetailDto);
			}
			return edit;
		}
		return 0;
	}
	@Override
	public int delete(DUserInfo dUserInfo, String id) {
		int delete = dStoreTransDao.delete(dUserInfo, id);
		return delete;
	}
	@Override
	public int outConfirm(DUserInfo dUserInfo, String id) {
		int result = dStoreTransDao.outConfirm(dUserInfo, id);
		return result;
	}
	@Override
	public int inConfirm(DUserInfo dUserInfo, String id) {
		int result = dStoreTransDao.inConfirm(dUserInfo, id);
		return result;
	}

}
